introduction to backtracking - branch and bound